/**
 * 分页导航功能模块
 * 功能：支持页码跳转、输入跳转、保留搜索条件
 */

/**
 * 分页导航核心函数
 * @param frm 表单对象
 * @param num 目标页码
 */
function page_nav(frm, num) {
	// 设置当前页码
	frm.pageIndex.value = num;

	// 保留搜索条件：从表单中获取已有的搜索参数
	const searchParams = getSearchParams(frm);

	// 添加搜索参数到表单（确保分页时携带条件）
	addSearchParamsToForm(frm, searchParams);

	// 提交表单
	frm.submit();
}

/**
 * 跳转到指定页码（带输入验证）
 * @param frm 表单对象
 * @param num 目标页码
 */
function jump_to(frm, num) {
	// 获取总页数（从隐藏域获取，需在JSP中添加：<input type="hidden" id="totalPageCount" value="${totalPageCount}">）
	const totalPageCount = document.getElementById("totalPageCount").value;

	// 验证输入：必须为正整数
	const regexp = /^[1-9]\d*$/;
	if (!regexp.test(num)) {
		alert("请输入大于0的正整数！");
		return false;
	}

	// 验证页码范围
	if (parseInt(num) > parseInt(totalPageCount)) {
		alert("请输入小于等于总页数的页码");
		return false;
	}

	// 调用分页导航函数
	page_nav(frm, num);
}

/**
 * 获取表单中的搜索参数
 * @param frm 表单对象
 * @return 搜索参数字典
 */
function getSearchParams(frm) {
	const searchParams = {};
	const inputs = frm.elements;

	// 提取搜索相关参数（根据实际表单字段调整）
	const searchFields = ['productName', 'categoryLevel1Id', 'categoryLevel2Id', 'categoryLevel3Id'];

	for (let i = 0; i < inputs.length; i++) {
		const input = inputs[i];
		if (searchFields.includes(input.name)) {
			searchParams[input.name] = input.value;
		}
	}

	return searchParams;
}

/**
 * 将搜索参数添加到表单（处理动态参数）
 * @param frm 表单对象
 * @param searchParams 搜索参数字典
 */
function addSearchParamsToForm(frm, searchParams) {
	// 先移除已有的搜索参数（避免重复）
	const existingSearchInputs = frm.querySelectorAll('input[name^="productName"], input[name^="categoryLevel"]');
	existingSearchInputs.forEach(input => frm.removeChild(input));

	// 添加新的搜索参数（使用隐藏域）
	for (const [name, value] of Object.entries(searchParams)) {
		if (value || value === 0) { // 保留空字符串和0值
			const hiddenInput = document.createElement("input");
			hiddenInput.type = "hidden";
			hiddenInput.name = name;
			hiddenInput.value = value;
			frm.appendChild(hiddenInput);
		}
	}
}